//
// Created by 45512 on 2021/11/10.
//
#include <iostream>
#include <algorithm>
#include <vector>
#include <set>

using namespace std;

bool is_zero(int a) {
    return a == 0;
}

int num_split(int n, int A[]) {
    int count = 0;
    if (!is_zero(A[0])) count++;
    for (int i = 1; i < n; i++) {
        if (is_zero(A[i - 1]) && !is_zero(A[i])) count++;
    }
    return count;
}

int main() {
    int n;
    cin >> n;
    int A[n];
    for (int i = 0; i < n; i++) {
        cin >> A[i];
    }

    int count = num_split(n, A);

//    //第一种方法：暴力
//    int max = *max_element(A, A + n);
//    int min = *min_element(A, A + n);
//    for (int p=min+1;p<=max;p++){
//        for (int j=0;j<n;j++){
//            if (A[j]<p) A[j] = 0;
//        }
//        if (count < num_split(n,A)) count = num_split(n,A);
//    }

//    //第二种方法：优化暴力（将上面的外循环数目降低，但是加入了一个for循环嵌套for循环）
//    vector<int> vec;
//    for (int i = 0; i < n; i++) {
//        bool lable = 1;
//        for (int j = 0; j < i; j ++) {
//            if (A[i] == A[j]){
//                lable = 0;
//                break;
//            }
//        }
//        if (lable) vec.push_back(A[i]);
//    }
//    sort(vec.begin(),vec.end());
//
//    for (int p=0;p<vec.size();p++){
//        for (int j=0;j<n;j++){
//            if (A[j]<vec[p]) A[j] = 0;
//        }
//        if (count < num_split(n,A)) count = num_split(n,A);
//    }


    //第三种方法：部分优化（将一方法的外循环数目降低,相对于二，就是直接用sort函数先排序，然后只用一个for循环，没有单独嵌套for循环）
    set<int> c;
    for (int i = 0; i < n; i++) {
        c.insert(A[i]);
    }
    for (auto it = ++c.begin(); it != c.end(); it++) {
        for (int j = 0; j < n; j++) {
            if (A[j] < *it) A[j] = 0;
        }
        if (count < num_split(n, A))
            count = num_split(n, A);
    }

    cout << count << endl;

    return 0;
}

//重新写还是70分
//#include <iostream>
//#include <set>
//using namespace std;
//
//int main(){
//    int n;
//    cin >> n;
//    int num[n+1]={0};
//    for (int i=0;i<n;i++){
//        cin >> num[i];
//    }
//    int count = 0;
//    //最后一个数补了一个0
//    for (int i=1;i<=n;i++){
//        if (num[i-1]!=0 && num[i]==0) count++;
//    }
//    cout << count << endl;
//    int max_count = count;
//
//    set<int> list;
//    for (int i=0;i<n;i++){
//        list.insert(num[i]);
//    }
//    for(auto it= list.begin();it!=list.end();it++){
//        for (int i=0;i<=n;i++){
//            if (num[i]<*it) num[i]=0;
//        }
//        count = 0;
//        for (int i=1;i<=n;i++){
//            if (num[i-1]!=0 && num[i]==0) count++;
//        }
//        if (count >max_count) max_count=count;
//    }
//    cout << max_count << endl;
//    return 0;
//}